Impact Analysis Tool (IAT)
1. Description
The Impact Analysis Tool answers one question before any system change: "If I modify or remove this program or file, what else will break?"
It scans the server and the job scheduling system to find everything that depends on the objects you specify, and produces a report showing exactly what is at risk.
2. Supported search types
- binary — A program or shell script. Searches for the name as a substring in file content and DB workflow definitions.
- file — A data or output file (e.g.
.cf,.txt). Searches for the filename across scripts, configs, and DB entries. - config — A configuration file, typically
.json. Functionally identical tofile; listed separately in the report for organisational clarity. - cf_metadata_validation — A cashflow file paired with its expected metadata schema. Checks that every place the cashflow file is used, the correct metadata file accompanies it. Reports each hit as
MATCHorMISMATCH.
3. How to run
Using the provided wrapper (builds and runs):
bash run.sh
# or
./run.sh
Or directly:
./impact_analysis_tool \
--config-file files.json \
--as-on-date <DD-MM-YYYY> \
--log-file logs/iat.log \
--diagnostics-log-file logs/iat-diag.log
Parameters:
--config-file: Path to the tool configuration file (files.json). Required.--as-on-date: Processing date inDD-MM-YYYYformat. Required. Note: accepted by the CLI but not currently used in processing.--diagnostics-log-file: Path to write diagnostics logs. Required.--log-file: Path to write info logs. Optional.--log-level: Log verbosity:error,warn,info,debug,trace. Default isinfo. Optional.--diagnostics-flag: Enable performance timing in the diagnostics log. Default isfalse. Optional.
4. Configuration
The tool requires two configuration files.
Tool configuration — files.json
Passed via --config-file. Specifies search paths, database connection, and output location.
{
"files": [
{
"object_file_path": "path/to/objects.json",
"program_path": "/home/dbuser/programs",
"mounted_path": "/mnt/shared1,/mnt/shared2",
"output_path": "reports/output.txt",
"connection_string": "user/pass@//host:1521/ORCL",
"db_table_name": "BALM.STREAMDEF",
"db_type": "oracle"
}
]
}
Notes:
db_typesupports"oracle","postgres", and"mssql". Defaults to"oracle"if omitted or invalid.- If
connection_stringis empty, database querying is skipped automatically.
Objects file — objects.json
Lists the objects to search for. All keys are optional — include only what you need. Fields accept either a JSON array or a comma-separated string.
Binaries only
{ "binary_scripts": ["finnone_loans", "pp_sec_ba"] }
Files only
{ "files": ["FinnoneCFOutput.cf"] }
Configs only
{ "configs": ["finnone_loans.json"] }
CF + Metadata validation only
{
"cf_metadata_validation": [
{
"cashflow_file": "FinnoneCFOutput.cf",
"metadata_file": "finnone_loans_fields.json"
}
]
}
All together
{
"binary_scripts": ["finnone_loans", "pp_sec_ba"],
"files": ["FinnoneCFOutput.cf"],
"configs": ["finnone_loans.json"],
"cf_metadata_validation": [
{
"cashflow_file": "FinnoneCFOutput.cf",
"metadata_file": "finnone_loans_fields.json"
}
]
}
5. Output files and meaning
All outputs are written to the path configured in output_path inside files.json.
output.txt— Active references only. Contains only references that belong to a currently running stream. Use this to identify what will break if a change is made today.output_all_refs.txt— Every reference found, including historical scripts and non-active paths.{stem}_excel_analysis.txt— Multi-tab workbook layout. Ifoutput_pathisreports/output.txt, the generated file will bereports/output_excel_analysis.txt.
Standard result format
OBJECT 1: [binary : finnone_loans]
┌───────┬────────────┬──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
│ REF # │ SOURCE │ LOCATION / MATCH DETAIL │
├───────┼────────────┼──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤
│ 1.1 │ Filesystem │ test-bed/programs/IND/scripts/pp_finnone_loans.sh │
│ 1.2 │ Database │ STREAMID : 1001 (Finnone Loans) [FlowName : Finnone Loans Flow | FlowId : 1 | ProcessName : CF Generator | ProcessId : 1 | Exec : 3] │
└───────┴────────────┴──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
REF #— A numbered reference for tracking.SOURCE—Filesystem(a file on the server) orDatabase(a STREAMDEF table entry).LOCATION / MATCH DETAIL— ForFilesystem, the file path. ForDatabase, the stream ID, stream name, and detailed flow/process metadata: FlowName, FlowId, ProcessName, ProcessId, and Exec (executor ID).
CF + Metadata validation result format
1. CF+METADATA CONSISTENCY CHECK: [files : FinnoneCFOutput.cf]
Expected Metadata Schema: finnone_loans.json
┌──────────┬────────────┬──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
│ STATUS │ REF TYPE │ REFERENCE PATH / STREAM & METADATA DETAILS │
├──────────┼────────────┼──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤
│ MISMATCH │ Filesystem │ test-bed/programs/Basel/LCR/IND/scripts/finnone-t1-cf.sh │
│ │ │ └── 📄 finnone_loans_fields.json │
│ MISMATCH │ Database │ STREAMID : 1001 (Finnone Loans) [FlowName : Finnone Loans Flow | FlowId : 1 | ProcessName : BALM Processor | ProcessId : 2 | Exec : 3] ──► balm_finnone_loans.sh │
│ │ │ └── 📄 (none) │
└──────────┴────────────┴──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
MISMATCH means the cashflow file is referenced but paired with an unexpected, incorrect, or missing metadata schema ((none)). Database mismatches include the full flow metadata and execution path trace.
Excel analysis tabs
The Excel file has up to four tabs. Each tab answers a different business question.
Tab 1 — SUMMARY
"At a glance, which objects are actually in use and which are not?"
One row per object searched. Shows how many scripts and scheduled jobs reference it.
+-----------+------------------------+--------------------+-----------------+---------------+
| Object ID | Object Type | Object Name | Filesystem Hits | Database Hits |
+-----------+------------------------+--------------------+-----------------+---------------+
| 1 | binary | pp_sec_ba.sh | 0 | 0 |
| 2 | binary | pp_sec_ba | 2 | 2 |
| 6 | files | FinnoneCFOutput.cf | 2 | 2 |
| 12 | cf_metadata_validation | FinnoneCFOutput.cf | 2 | 2 |
+-----------+------------------------+--------------------+-----------------+---------------+
Objects showing 0 in both hit columns are not referenced anywhere — safe candidates for removal or retirement.
Tab 2 — FILESYSTEM REFERENCES
"Which scripts or files on the server use this object?"
One row per script or file that references the searched object.
+-----------+-------------+--------------------+-------+--------------------------------------------------+
| Object ID | Object Type | Object Name | Ref # | Filesystem Path |
+-----------+-------------+--------------------+-------+--------------------------------------------------+
| 2 | binary | pp_sec_ba | 2.1 | programs/IND/pp_sec_ba |
| 2 | binary | pp_sec_ba | 2.2 | programs/IND/scripts/pfv_sec.sh |
| 6 | files | FinnoneCFOutput.cf | 6.1 | programs/Basel/LCR/IND/scripts/finnone-t1-cf.sh |
+-----------+-------------+--------------------+-------+--------------------------------------------------+
Each row is a script that will need to be updated if the object changes or is removed.
Tab 3 — DATABASE REFERENCES
"Which scheduled jobs (streams) depend on this object?"
One row per scheduled job that references the searched object.
+-----------+-------------+--------------------+-------+-----------+-------------------+----------------------------------------+
| Object ID | Object Type | Object Name | Ref # | Stream ID | Stream Name | Match Details |
+-----------+-------------+--------------------+-------+-----------+-------------------+----------------------------------------+
| 2 | binary | pp_sec_ba | 2.3 | 2092 | BA Securitisation | Process: Pre-Flight-Validator (Exec 5) |
| 2 | binary | pp_sec_ba | 2.4 | 2092 | BA Securitisation | Process: Pre-Processor (Exec 5) |
| 3 | binary | finnone_loans | 3.2 | 1001 | Finnone Loans | Process: CF Generator (Exec 3) |
+-----------+-------------+--------------------+-------+-----------+-------------------+----------------------------------------+
Each row is a live scheduled job that will be affected if the object changes. The Match Details column shows exactly which step inside that job uses it.
Tab 4 — CF METADATA VALIDATION
"Is every cashflow file being used with the correct configuration?"
Only present when a cf_metadata_validation check is requested. Shows whether each usage of the cashflow file is paired with the right metadata schema.
+-----------+--------------------+--------------------------+----------+------------+--------------------------------+----------------------------+
| Object ID | Cashflow File | Expected Metadata Schema | Status | Source | Reference Location / Stream | Referenced Metadata Schema |
+-----------+--------------------+--------------------------+----------+------------+--------------------------------+----------------------------+
| 12 | FinnoneCFOutput.cf | finnone_loans.json | MATCH | Filesystem | programs/LCR/.../t1-cf.sh | finnone_loans.json |
| 12 | FinnoneCFOutput.cf | finnone_loans.json | MISMATCH | Filesystem | programs/IND/.../balm_loans.sh | (none) |
+-----------+--------------------+--------------------------+----------+------------+--------------------------------+----------------------------+
- MATCH — the script uses the cashflow file with the correct configuration. No action needed.
- MISMATCH — the script uses the cashflow file but with a wrong or missing configuration. This is a risk that can cause batch failures and must be corrected.
6. Common usage examples
Check impact before retiring a program:
{ "binary_scripts": ["finnone_loans"] }Check impact before renaming a configuration file:
{ "configs": ["finnone_loans.json"] }Run a CF + metadata consistency check:
{
"cf_metadata_validation": [
{ "cashflow_file": "FinnoneCFOutput.cf", "metadata_file": "finnone_loans.json" }
]
}Search for multiple object types together:
{
"objects": ["finnone_loans", "FinnoneCFOutput.cf", "finnone_loans.json"],
"cf_metadata_validation": [
{ "cashflow_file": "FinnoneCFOutput.cf", "metadata_file": "finnone_loans.json" }
]
}
Behavior notes:
- Searches are case-insensitive —
Finnone_Loans,FINNONE_LOANS, andfinnone_loansall match. - Duplicate results are removed automatically — each reference appears once.
- Missing objects are reported clearly — the report states "No references found" and never silently skips.
- Database search is optional — the tool works on filesystem alone if no DB credentials are supplied.
- Typical run time is under 1 minute for a full search across multiple paths and database.